package edu.tfh.s2.ehkbot.gerete.sensoren.simulation;

import java.util.HashMap;

import edu.tfh.s2.ehkbot.EHKBotMain;
import edu.tfh.s2.ehkbot.daten.GeraeteRegistration;
import edu.tfh.s2.ehkbot.gerete.Fahrgestell;
import edu.tfh.s2.ehkbot.gerete.sensoren.IndoorGPS;
import edu.tfh.s2.ehkbot.gerete.sensoren.Sensor;
import edu.tfh.s2.ehkbot.steuerung.Position;
import edu.tfh.s2.ehkbot.steuerung.Richtung;

/**
 * SensorStorryFahre kummert sich um die Simulation des Abstandssensoren wehrend des Fahrens.
 * 
 * @author s2zehn
 */
public class SensorStorryFahre extends Thread {
	private int abtastZeitMs;
	private boolean laufe = true;

	/**
	 * Konstruktor für SensorStorryFahre
	 * 
	 * @param abtastZeitMs
	 *            Die Abtastzeit die festlegt wie offt die Sensorwerte Aktualiesiert werden.
	 */
	public SensorStorryFahre(int abtastZeitMs) {
		this.abtastZeitMs = abtastZeitMs;
	}

	/**
	 * Beendet die Storry.
	 */
	public void beende() {
		this.laufe = false;
	}

	/**
	 * @see java.lang.Thread#run()
	 */
	public void run() {
		while (laufe) {
			try {
				String[] SensorNamen = new String[] { "000", "045", "090", "135", "180", "225", "270", "315" };
				HashMap<String, Sensor> sensoren = GeraeteRegistration.getInstance().findeSensoren(
					Fahrgestell.modulName,
					SensorNamen);

				Position pos = IndoorGPS.getInstance().getCurrentPosition();
				Richtung startRichtung = IndoorGPS.getInstance().getRichtung();

				/*
				 * Wenn der Bot nicht grade steht müssen die relativen grad der Ausrichtung der Sensoren in
				 * Absolute Grad angaben umrechen
				 */
				Richtung[] richtungen = new Richtung[8];
				for (int i = 0; i < 8; ++i) {
					richtungen[i] = new Richtung(i * (Math.PI * 2) / 8).add(startRichtung);
				}

				double weg = EHKBotMain.getInstance().getKarte().getAusbreitung(pos, startRichtung);
				// System.err.println(weg);

				sleep(abtastZeitMs);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}
